import java.util.HashMap;
import java.util.Stack;

public class code3 {
//    力扣 150 有效的括号
public boolean isValid(String s) {
    // 这里要实现的括号的匹配
    // 对于括号的匹配是分为左右的
    // 首先判断，如果当前的字符串长度为 奇数 此时直接返回 false
    if(s.length() % 2 == 1) {
        return false;
    }

    // 首先，在这里将括号存储到 hash 表中
    // 这里记录的都是反向的，因为栈的压入会让元素的顺序发生变化
    HashMap<Character, Character> map = new HashMap<>();
    map.put(')', '(');
    map.put(']', '[');
    map.put('}', '{');

    Stack<Character> stack = new Stack<>();
    for(int i = 0; i < s.length(); i++) {
        // 这里获取单个字符串进行比对
        char ch = s.charAt(i);
        if(map.containsKey(ch)) {
            if(stack.isEmpty() || stack.peek() != map.get(ch)) {
                return false;
            }
            stack.pop();
        } else {
            stack.push(ch);
        }
    }
    return stack.isEmpty();
}
}
